#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QFileDialog>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->setWindowTitle("记事本");

    // 获取菜单栏
    QMenuBar *menubar = this->menuBar();

    // 添加菜单
    QMenu *menu = new QMenu("文件");
    menubar->addMenu(menu);

    // 添加菜单项
    QAction *act1 = new QAction("打开");
    QAction *act2 = new QAction("保存");

    menu->addAction(act1);
    menu->addAction(act2);

    // 添加文字编辑框并放置在窗口的中间
    edit = new QPlainTextEdit();
    edit->setPlaceholderText("请输入文字");
    this->setCentralWidget(edit);

    // 设置菜单项槽函数
    connect(act1, &QAction::triggered, this, &MainWindow::Handler1);
    connect(act2, &QAction::triggered, this, &MainWindow::Handler2);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::Handler1()
{
    // 获取打开的文件路径
    QString path = QFileDialog::getOpenFileName(this);

    // 初始化File对象
    QFile file(path);

    // 以只读的方式打开文件
    bool ret = file.open(QIODevice::ReadOnly);
    if(!ret)
    {
        // 打开文件失败
        qDebug() << "打开失败";
        return;
    }

    // 打开文件成功
    // 读取文件数据
    QString string = file.readAll();

    // 将读取到的数据写入编辑框中
    edit->setPlainText(string);

    // 关闭文件
    file.close();
}

void MainWindow::Handler2()
{
    QString path = QFileDialog::getSaveFileName(this);

    QFile file(path);
    bool ret = file.open(QIODevice::WriteOnly);
    if(!ret)
    {
        // 打开文件失败
        qDebug() << "打开失败";
        return;
    }

    const QString &string = edit->toPlainText();
    file.write(string.toUtf8());

    file.close();
}

